1
Le mystère des dix cents et la réalité des nombres flottants
AI017Lesson 3
00:00

La friction fondamentale en physique computationnelle provient du fait que les ordinateurs représentent les nombres réels à l'aide de mathématiques à virgule flottante binaire. Contrairement à la pensée humaine en base 10 (décimale), le matériel stocke les valeurs en base 2 (binaire). Cela entraîne une abstraction fuyante: des fractions décimales simples comme 0,1 ne peuvent pas être représentées de manière précise.

1. La réalité des nombres flottants

Go fournit deux types principaux pour les nombres réels : float32 et float64. Lorsqu'on utilise la syntaxe de déclaration de variable courte comme prix := 0.0, Go utilise par défaut float64. Ces types sont des approximations de la réalité, et non des valeurs mathématiques exactes.

0,1 + 0,1 = ?Gopher : « Pourquoi n'est-ce pas 0,2 ? »0,0001100110011...

2. Le mystère de 0,1

En base 10, $1/3$ donne un décimal infini répétitif ($0,333...$). En base 2, la valeur $0,1$ donne un fraction infinie répétitive. Comme la mémoire de l'ordinateur est finie, cette fraction est tronquée, ce qui entraîne des erreurs cumulatives. Par exemple, $0,1 + 0,2$ donne $0,30000000000000004$ au lieu de $0,3$ exactement.

Attention : N'utilisez jamais == pour comparer des nombres flottants dans des portes logiques, car ces microscopiques différences feront échouer les comparaisons.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>